/**
 * 获取流程实例的当前状态信息。包含当前节点，当前处理人，历史记录等
 *
 * 输入参数:
 *
 * 输出参数:
 *    { current, waiting, history }
 *    current：流程实例的当前信息
 *    waiting：当前待办列表
 *    history：流程实例的历史记录
 */
(() => {
  // 私有区域

  return function ({ UID, InstanceID }) {
    // 验证输入参数
    if (!UID) throw Error("无效会话");

    const current = A.card['B.流程实例'].load(InstanceID);

    // 加载所有待办事项    
    const { Rows: waiting } = A.job.CardR(UID, 'B.流程待办',
      ['流程实例', '待办用户', '待办用户.名称', '待办用户.用户名', '描述'],
      {
        Filter: [['流程实例', '=', InstanceID]],
      });

    // 加载所有提交记录
    const { Rows: history } = A.job.CardR(UID, 'B.流程记录',
      ['流程实例', '通过节点', '到达节点', '创建用户', '创建用户.名称', '创建时间', '回滚标记', '动作', '意见', '序号'],
      {
        Filter: [['流程实例', '=', InstanceID]],
        Order: { '序号': 'asc' },
      });

    // 返回结果
    return { current, waiting, history };
  };
})()